#pragma once
#include <string>
#include <vector>

namespace cem
{

// 诊断信息的严重级别
enum class DiagnosticSeverity
{
    Info,
    Warning,
    Error
};

// 单条诊断信息
struct Diagnostic
{
    // 诊断级别
    DiagnosticSeverity severity{DiagnosticSeverity::Error};
    // 人类可读的错误/警告信息
    std::string message;
    // 指向配置树中问题位置的路径（从根开始的层级名称序列）
    std::vector<std::string> path;
};

// 诊断列表
using DiagnosticList = std::vector<Diagnostic>;

} // namespace cem